#include <iostream>
#include <unordered_map>
using namespace std;


/**
  * @方法: 官方题解
  * @时间复杂度: o(n)
  * @空间复杂度: o(|z|)，|z|为字符集大小
  * @评价: 代码简洁，适合学习
*/
int longestPalindrome(string s) {
    unordered_map<char, int> count;
    int ans = 0;
    for (char c : s)
        ++count[c];
    for (auto p : count) {
        int v = p.second;
        ans += v / 2 * 2;
        if (v % 2 == 1 and ans % 2 == 0)
            ++ans;
    }
    return ans;
}

/**
 * @方法:
 * @时间复杂度: o(n)
 * @空间复杂度: o(|z|)，|z|为字符集大小
 * @评价:
 */
int longestPalindrome1(string s) {
    unordered_map<char, int> dict;
    for (int i = 0; i < s.length(); i++) {
        auto it = dict.find(s[i]);
        if (it != dict.end()) {
            it->second++;
        } else {
            dict.insert(make_pair(s[i], 1));
        }
    }
    auto it = dict.begin();
    int cntOdd = 0;
    while (it != dict.end()) {
        if (it->second % 2)
            cntOdd++;
        it++;
    }
    return cntOdd == 0 ? s.length() : s.length() - cntOdd + 1;
}

int main() {
    cout << "hello world" << endl;
    return 0;
}